package br.com.treinamento.gestaoExperienciaProfissional.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

@Entity
@Table(name = "grupo")
public class Grupo extends EntidadeComum implements Serializable  {

	private static final long serialVersionUID = -9111381689292285959L;

	private String nome;
	
	private String descricao;
	
	@ManyToMany(fetch = FetchType.LAZY, mappedBy = "grupos")
	private List<Usuario> usuarios;
	
	@ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
	@JoinTable(name = "grupo_permissao", joinColumns = { @JoinColumn(name = "id_grupo", nullable = false, updatable = false) }, 
										 inverseJoinColumns = { @JoinColumn(name = "id_permissao", nullable = false, updatable = false) })
	private List<Permissao> permissoes;
	

	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public String getDescricao() {
		return descricao;
	}
	
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public List<Usuario> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
	
	public List<Permissao> getPermissoes() {
		return permissoes;
	}

	public void setPermissoes(List<Permissao> permissoes) {
		this.permissoes = permissoes;
	}

}
